home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / MYUTIL / MINTFIX.M < prev    next >
Encoding:
Text File  |  1992-02-19  |  2.9 KB  |  100 lines

  1. MODULE MiNTFix;
  2. (*$C-,N+,R-,L-*)
  3.  
  4. (*
  5.  * Dieses Programm behebt einen kleinen Fehler bei MiNT,
  6.  * einem Multitask-Betriebsssystemkernel für TOS-Anwendungen.
  7.  *
  8.  * Benötigt wird das Programm, wenn die MM2-Shells unter MiNT
  9.  * eingesetzt werden sollen und im Editor (z.B. GEP_ED o. GME)
  10.  * der Compiler per Loadtime-Link aufgerufen werden soll.
  11.  * Ohne dieses Programm würde danach der verfügbare Gesamtspeicher
  12.  * um ca. 50000 Byte verringert sein, der größte verfügbare Block
  13.  * wird sogar viel geringer sein, so daß evtl. weitere Compiler-
  14.  * oder Linker-Aufrufe wegen zu knappem Speicher fehlschlagen.
  15.  *
  16.  * Dieses Programm umgeht dieses Übel, wenn es vor Start der Shell
  17.  * aufgerufen wird. Dann sorgt es dafür, daß diese leider unvermeidlichen
  18.  * 50000 Byte im untersten Speicherbereich belegt werden, so daß
  19.  * in der Shell keine weiteren Speicherzerstückelungen auftreten
  20.  * dürften.
  21.  *
  22.  * Das Programm ist zu übersetzen und dann ohne irgendwelche Treiber
  23.  * zu linken (auch ohne M2Init!). Dann muß es nach der Installation
  24.  * von MiNT, jedoch vor dem Start der MM2-Shell, gestartet werden,
  25.  * am Besten, indem es mit der "exec"-Anweisung in MINT.CNF gestartet
  26.  * wird.
  27.  *
  28.  * Getestet wurde das Ganze mit MiNT Version 0.92. Andere Versionen
  29.  * zeigen diesen Effekt evtl. nicht, schaden kann dieses Programm
  30.  * aber keinesfalls.
  31.  *)
  32.  
  33. FROM SYSTEM IMPORT ASSEMBLER;
  34.  
  35. BEGIN
  36.   ASSEMBLER
  37.         ; reduce our own TPA to size of code
  38.         move.l  4(a7),a5        ; load ptr to our base page
  39.         lea     256(a5),a7
  40.         MOVE.L  12(a5),a0
  41.         adda.w  #256,a0
  42.         move.l  a0,-(A7)
  43.         MOVE.L  A5,-(A7)
  44.         CLR.W   -(A7)
  45.         MOVE    #$4A,-(A7)      ; Mshrink ()
  46.         TRAP    #1
  47.         ADDA.W  #12,A7
  48.  
  49.         pea     proc1(pc)
  50.         bsr     call
  51.         bra     proc3
  52.  
  53. proc1:  ; create a new base page
  54.         pea     proc2(pc)
  55.         bsr     call
  56.  
  57. proc2:  ; create a new base page
  58.         pea     proc3(pc)
  59.         bsr     call
  60.  
  61. proc3:  clr     -(a7)
  62.         trap    #1
  63.  
  64. call:   CLR.L   -(A7)           ; env
  65.         PEA     null(PC)        ; com
  66.         CLR.L   -(A7)           ; path
  67.         MOVE.W  #5,-(A7)        ; mode
  68.         MOVE    #$4B,-(A7)
  69.         TRAP    #1
  70.         ADDA.W  #16,A7
  71.  
  72.         ; reduce TPA to size of base page only:
  73.         ; Mshrink (base page, 256)
  74.         MOVE.L  #256,-(A7)
  75.         MOVE.L  D0,-(A7)
  76.         CLR.W   -(A7)
  77.         MOVE    #$4A,-(A7)
  78.         TRAP    #1
  79.         MOVE.L  4(A7),A0        ; A0: base page addr
  80.         ADDA.W  #12,A7
  81.  
  82.         ; do base page settings
  83.         move.l  4(a7),8(a0)
  84.         
  85.         ; call process ()
  86.         CLR.L   -(A7)           ; env
  87.         MOVE.L  A0,-(A7)        ; com
  88.         CLR.L   -(A7)           ; path
  89.         MOVE.W  #4,-(A7)        ; mode
  90.         MOVE    #$4B,-(A7)
  91.         TRAP    #1
  92.         ADDA.W  #16,A7
  93.         
  94.         RTS
  95.  
  96. null:   DC.W    0
  97.  
  98.   END
  99. END MiNTFix.
  100.